home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 API Bible / Windows 95 API Bible 3 Disc Set.iso / Win32 API Bible Book 1 of 3.iso / chapte22 / ex16.c < prev    next >
C/C++ Source or Header  |  1995-05-29  |  2KB  |  49 lines

  1. #include <genstub.c>
  2.  
  3. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  4. {
  5.    switch (uMsg)
  6.    {
  7.          case WM_COMMAND:
  8.                switch ( LOWORD( wParam ) )
  9.                {
  10.                      case IDM_TEST:
  11.                      {
  12.                            HFONT hOldFont;
  13.                            TCHAR szBuffer[32];
  14.                            TCHAR szOemBuffer[32];
  15.                            // Note: French characters here are in OEM table values!
  16.                            TCHAR szStart[] = "Sword in French: ";
  17.                            TCHAR szFrench[] = { 0x90, 0x70, 0x82, 0x65, 0 };
  18.                            HDC   hDC = GetDC( hWnd );
  19.  
  20.                            lstrcpy( szOemBuffer, szStart );
  21.                            lstrcat( szOemBuffer, szFrench );
  22.  
  23.                            hOldFont = SelectObject( hDC, GetStockObject(
  24.                                                     OEM_FIXED_FONT ) );
  25.                            OemToCharBuff( szOemBuffer, szBuffer,
  26.                                           lstrlen( szOemBuffer ) + 1 );
  27.                            TextOut( hDC, 0, 0, szOemBuffer, lstrlen(szOemBuffer) );
  28.  
  29.                            DeleteObject( SelectObject( hDC,
  30.                                          GetStockObject( ANSI_FIXED_FONT ) ) );
  31.                            TextOut( hDC, 0, 20, szBuffer, lstrlen(szBuffer) );
  32.  
  33.                            DeleteObject( SelectObject( hDC, hOldFont ) );
  34.                            ReleaseDC( hWnd, hDC );
  35.                      }
  36.                      break;
  37.                      case IDM_EXIT:
  38.                            DestroyWindow( hWnd );
  39.                      break;
  40.                }
  41.                break;
  42.          case WM_DESTROY:
  43.                PostQuitMessage( 0 );
  44.                break;
  45.          default:
  46.                return( DefWindowProc( hWnd, uMsg, wParam, lParam ) );
  47.    }
  48.    return( NULL );
  49. }